home *** CD-ROM | disk | FTP | other *** search
- Subject: v18i039: Mail user's shell version 6.4, Part17/19
- Newsgroups: comp.sources.unix
- Sender: sources
- Approved: rsalz@uunet.UU.NET
-
- Submitted-by: Dan Heller <island!argv@sun.com>
- Posting-number: Volume 18, Issue 39
- Archive-name: mush6.4/part17
-
-
-
- #! /bin/sh
- # This is a shell archive. Remove anything before this line, then unpack
- # it by saving it into a file and typing "sh file". To overwrite existing
- # files, type "sh file -c". You can also feed this as standard input via
- # unshar, or by typing "sh <file", e.g.. If this archive is complete, you
- # will see the following message at the end:
- # "End of archive 17 (of 19)."
- # Contents: mush.1.3
- # Wrapped by rsalz@papaya.bbn.com on Mon Mar 13 19:25:23 1989
- PATH=/bin:/usr/bin:/usr/ucb ; export PATH
- if test -f 'mush.1.3' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'mush.1.3'\"
- else
- echo shar: Extracting \"'mush.1.3'\" \(49215 characters\)
- sed "s/^X//" >'mush.1.3' <<'END_OF_FILE'
- Xand is reset each time the command
- X.BR cd
- Xis called.
- XIt is referenced each time
- X.B pwd
- Xis called and may be used as any other shell variable.
- X.TP
- X.B date_received
- X(Boolean)
- XWhen message headers are printed, the date is normally shown is
- Xthe time and date the sender sent the message. If this variable
- Xis set, then the date displayed is the date received.
- X.sp
- XWhen sorting messages by date, this variable is queried to determine
- Xwhether the messages should be sorted by date sent or date received.
- X.sp
- X\fBWarning:\fR For mailers that store messages \fIwithout\fR a line
- Xthat starts with \*QFrom \*U, this option does nothing.
- X.TP
- X.B dead
- X(String)
- XFile to use instead of dead.letter when interrupted mail is saved.
- XFor more information, see the variable
- X.B nosave.
- X.TP
- X.B dot
- X(Boolean)
- XAccepts a `.' on a line by itself, in addition to `^D', to terminate messages.
- X.TP
- X.B editor
- X(String)
- XEditor to use when \*Q~e\*U is specified.
- XDefault is the value of the variable
- X.BR visual .
- X.TP
- X.B escape
- X(Character)
- XWhen composing a mail message (not in an editor), and the
- X.B escape
- Xcharacter is the first character on the line, the next character
- Xis examined and a corresponding function associated with that
- X.I "escape command"
- Xis executed.
- XSee
- X.B "tilde escapes"
- Xfor more information.
- X.TP
- X.B folder
- X(String)
- XThe folder variable is set to a path where folders are kept.
- X\&~/Mail is the default value.
- X.TP
- X.B fortune
- X(Boolean/string)
- XIf fortune is set, a random fortune is appended to the end of
- Xall outgoing mail using the
- X.IR UNIX (TM)
- Xcommand
- X.B /usr/games/fortune
- X(may vary from system to system).
- XIf fortune is set to something that starts with
- Xa `\-', then it is interpreted as a flag to fortune (e.g., \*Q\-o\*U).
- XIf
- X.B fortune
- Xstarts with a `/', then the program described by
- Xthe string is executed (thus not doing fortune at all, if you want).
- XBy default,
- X.I "fortune \-s"
- X(short fortunes) is used.
- X.TP
- X.B fortunates
- X(String)
- XWhen fortunes are added to messages, sometimes it is desireable to
- Xmake sure that only a selected group of people get a fortune since
- Xcertain people may not understand the messages at the end of your
- Xmail. Therefore, you can set a list of addresses (either pure addresses
- Xor aliases that are expanded to addresses) to be the only people who
- Xreceive fortunes if one is to be appended. Therefore,
- Xif the To: and Cc: lines contain only address listed in this string
- Xvariable, then a fortune is appended to the message.
- XIf those lists contain names that are not on the fortunates
- Xlist, then no fortune is added.
- XThis cannot be overriden; using the
- Xtilde command \*Q~F\*U does not force a fortune to be added unless the
- Xindividuals on the recipient list are all included in the fortunates
- Xlist. The list is made up of addresses or aliases separated by spaces or
- Xcommas.
- X.I "NOTE: fortune must be set in order for fortunates to work."
- X.TP
- X.B hdr_format
- X(String)
- XThis variable controls the format of the headers displayed by the
- X.B headers
- Xcommand and in the curses and graphics modes.
- XThe format style of this variable string is similar to printf in C.
- XWhen printing the information, the variable is evaluated and each
- Xcharacter in the string is echoed unless a `%' character is
- Xencountered.
- XIf one is found, the following string substitutions are made:
- X.sp
- X.in +2
- X.nf
- X.ta 0.5i
- X%a address of the author
- X%c number of characters (bytes) in the message
- X%f entire \*QFrom:\*U field (author)
- X%l number of lines in the message
- X%i the message-id (may not be present)
- X%n name of the author
- X%s subject of the message
- X%t \*QTo:\*U field (recipients)
- X%d entire date of the message
- X%T the time only of the message
- X%N the day number of the month of the message
- X%W the day of the week (Sun, Mon, etc.)
- X%M the month name of the message
- X%Y the year of the message
- X%y the last two digits of %Y
- X\\n a newline
- X\\t a tab
- X.fi
- X.in -2
- X.sp
- XA field width specifier may be used in all options.
- XThus, \*Q%20f\*U will print the
- Xfirst 20 characters of the from line.
- XNo matter what the formatting string, the message number
- Xfollowed by a `>' (for current message) is printed.
- X.sp
- XThe \*Qaddress\*U and \*Qname\*U of the author
- Xare extracted from the \*QFrom:\*U field of the message.
- XThe name may be given in parentheses and
- Xthe rest of the line is the address, or the address is given in angle
- Xbrackets (`<' and `>') and the rest of the line is the name.
- XSometimes the address is the only thing on the line,
- Xin which case the name and address are the same.
- X.sp
- X.TP
- X.B history
- X(Numeric)
- XThis variable is set to the number of commands the shell interface
- Xwill remember. It is just like the history variable used in
- X.I csh.
- XIf unset, the last command can always be referenced, but none other.
- X.TP
- X.B hold
- X(Boolean)
- XNormally, on termination of mail, read messages are saved in
- Xyour mbox (except those marked as preserved).
- XSetting
- X.B hold
- Xprevents this from happening,
- Xand messages remain in /usr/spool/mail/user.
- XThis does not apply to folders, obviously.
- X.TP
- X.B home
- X(String)
- XThis variable describes the user's home directory.
- XThe variable is initialized to the value of the environment variable HOME,
- Xbut can be modified at any time during the
- X.I Mush
- Xsession.
- XThe home directory is the same directory where temporary
- Xfiles are kept for editing and so forth.
- XIf the home directory cannot be found or read/write access is denied, an
- Xalternate directory, typically /tmp, is used.
- X.TP
- X.B hostname
- X(String)
- XThis is the name of your computer. Currently, its sole usage is to
- Xcompose a correct \*QFrom:\*U line for use with Mail Transport Agents
- Xthat do not create this header automatically. This will aid the
- Xrecipients of your mail in replying to your messages.
- X.sp
- XNote: the user should not have to set
- Xthis variable since it should be set automatically by the system. However,
- Xit may happen that the system's hostname cannot be queried and the user may
- Xhave to set this variable manually.
- X.TP
- X.B ignore_bang
- X(Boolean)
- XIf set,
- X.I Mush
- Xwill ignore the `!' character as a history reference.
- X.TP
- X.B ignoreeof
- X(Boolean/string)
- XIf set, `^D' will not exit from
- X.IR Mush .
- XIf set to a string, that string is executed as a command
- Xwhen `^D' is typed.
- XThis does not effect termination of messages under the
- X.B mail
- Xand
- X.B reply
- Xcommands.
- X.TP
- X.B indent_str
- X(String)
- XWhen including messages into the text of a letter you are editing,
- Xeach line of the messages is preceded by the value of
- X.BR indent_str .
- XIf it is unset, the message body is indented by the string \*Q> \*U.
- XSee also the variables
- X.B pre_indent_str
- Xand
- X.BR post_indent_str .
- X.TP
- X.B in_reply_to
- X(String)
- XThis variable may be set to a string that will complete the
- Xheader \*QIn-Reply-To:\*U.
- XThe format of this string is identical to the options for the variable
- X.BR hdr_format .
- X.sp
- XFor example, if the user were to respond to a message
- Xfrom Dan Heller that was sent on October 21, 1987, at 10:39pm, with
- X.B in_reply_to
- Xset to the string
- X.nf
- X.in +2
- X.sp
- X%n's message as of %d.
- X.sp
- X.ti -2
- Xthe header line
- X.sp
- XIn-Reply-To: Dan Heller's message as of Oct 21, 1987, 10:39pm.
- X.in-2
- X.fi
- X.sp
- Xwould be added to the message.
- X.TP
- X.B keepsave
- X(Boolean)
- XIf set, the commands
- X.B save
- Xand
- X.B write
- Xwill
- X.I not
- Xmark messages for deletion.
- X.TP
- X.B known_hosts
- X(String)
- XUsed in conjunction with the variable
- X.BR auto_route ,
- Xthis variable is set to a list of hosts, separated by spaces, tabs,
- Xand/or commas, and describes
- Xthe hosts with whom you know your machine shares UUCP connections.
- XWhen replying to mail, many times you will see that the return path
- Xconstructed will have hostnames that your site could call, but instead
- Xthe mail has been routed through a number of different machines first.
- X.sp
- XFor example, if you respond to mail that would mail to the path
- X.sp
- X.ti +2
- Xunicom!pixar!root
- X.sp
- Xbut your know your machine already calls pixar, then sending the mail
- Xto unicom first is unnecessary.
- XIf you have set your known_hosts string to include pixar in its list,
- Xthe resulting address would look like
- X.sp
- X.ti +2
- Xpixar!root
- X.sp
- XAlso see the command
- X.B replyall
- Xfor more information on constructing correct return addresses.
- X.TP
- X.B lister
- X(String)
- XDefault arguments to the \*Qls\*U command for printing the
- Xcontents of a directory.
- X.TP
- X.B logfile
- X(String)
- XSet to a filename which logs the headers of outgoing messages. The message
- Xbody of the message is not logged as it is for the
- X.B record
- Xfilename. The logfile can be read as a folder to scan for the fact that
- Xmessages have been sent. If \fBlogfile\fR and \fBrecord\fR are both set,
- Xthen the logfile and the record files will match exactly. In this case,
- Xthe record file can be quickly scanned by scanning the log file instead.
- X.sp
- XIf set, but not to a string, the log file defaults to ~/mail.log.
- X.TP
- X.B mbox
- X(String)
- XSet to the pathname of a file you'd like mush to use as the default
- Xholder for read mail.
- XThe default is ~/mbox.
- X.TP
- X.B metoo
- X(Boolean)
- XWhen replying to mail, you are normally deleted from the list of
- Xrecipients.
- XIf metoo is set, you remain on the list.
- XSee the
- X.B alternates
- Xcommand
- Xfor information on determining whether or not you're even on the list.
- X.TP
- X.B mil_time
- X(Boolean)
- XWhenever the time is displayed in a message header or in the prompt,
- Xit can be displayed in either 12-hour am/pm format, or in 24 hour
- Xmilitary time format.
- XThe default is the 12 hour format, but can be
- Xreset to use the 24 hour format by setting this variable.
- X.TP
- X.B newline
- X(Boolean/string)
- XIf set, carriage returns are ignored.
- XIf set to a string, that string is executed as a command when a
- Xcarriage return is typed.
- XOtherwise, carriage return prints the next undeleted message.
- X.TP
- X.B no_expand
- X(Boolean)
- XWhen a
- X.I Mush
- Xalias is used to reference a list of addresses, the list is expanded on
- Xthe To: and Cc: lines to indicate the complete list of all the recipients of
- Xthe message.
- XWhen no_expand is set, aliases are not expanded and the headers
- Xreflect the same information as typed by the user.
- X.TP
- X.B no_hdrs
- X(Boolean)
- XIf set, this variable tells
- X.I Mush
- Xnot to include your personalized mail headers in messages.
- XThis does not unset your headers, it just disables them.
- X.TP
- X.B no_reverse
- X(Boolean)
- XIn curses mode and in the tool mode, reverse video is not used to indicate the
- X.I "current message"
- Xif this variable is set.
- XIn the tool mode, if reverse video is not in use,
- Xtext is displayed in \*Qbold\*U.
- X.TP
- X.B nonobang
- X(Boolean)
- XIf this variable is set, history references that don't match anything will
- Xbe left unexpanded, rather than generating error messages.
- XThis is useful if you want argument referencing in cmd expansions, but do
- Xnot want to remember to escape every `!' you type in UUCP addresses.
- XIt is also recommended for use with curses mode, because history is not
- Xkept for line mode escapes from that interface.
- X.TP
- X.B nosave
- X(Boolean)
- XWhen composing a letter, the user can terminate the letter without sending
- Xit by using the tidle escape \*Q~q\*U or by sending two \*Qinterrupt\*U
- Xsignals.
- XWhen the message is terminated, a copy of it is saved to the
- Xfile \*Qdead.letter\*U in the user's home directory or to the file described
- Xby the variable
- X.BR dead .
- XIf the variable
- X.B nosave
- Xis set, then a backup copy of the message will not be saved.
- X.TP
- X.B pager
- X(String)
- XIf a message is longer than the number of lines that the variable
- X.B crt
- Xis set to, then this program is executed to view a message.
- XIf the user does not have this variable set, the user's environment PAGER
- Xis checked.
- XIf this isn't set, then the default value for pager (set up
- Xby the system manager) is used.
- XThis may or may not be the internal pager.
- XTo use the internal pager, you may set the variable pager to
- X.I internal
- Xor to a null string.
- X.TP
- X.B pre_indent_str
- X(String)
- XIf this variable is set, when including the body of a message into an outgoing
- Xmail message (using the \-i option to
- X.I reply
- Xor
- X.IR mail ,
- Xor when using the \*Q~i\*U escape),
- Xa line preceding the first line of
- Xincluded text is printed using the string value of the variable.
- XThis string uses the same printf style formatting characters as the
- X.B hdr_format
- Xvariable.
- XFor example, you could set
- X.B pre_indent_str
- Xas follows:
- X.sp
- X.ti +2
- Xset pre_indent_str = '[In the message entitled "%s", on %7d\\n %n writes:]'
- X.sp
- XYou can then include a message body using \*Q~i\*U, and you might
- Xget something like this:
- X.sp
- X.in +2
- X.nf
- X[In the message entitled "This is a test.", on Jan 19,
- X Dan Heller writes:]
- X> This is a test message to show how
- X> pre_indent_str might be used.
- X.ti -2
- X.sp
- X.fi
- XThis example assumes that the string value of
- X.B indent_str
- Xis not set.
- X.TP
- X.B post_indent_str
- X(String)
- XThis variable has the same function as
- X.B pre_indent_str
- Xexcept that the string is inserted into the message body
- X.I after
- Xthe text of the included message rather than before.
- XThe purpose of this variable is to complement the string described by
- Xthe variables
- X.B pre_indent_str
- Xand
- X.BR indent_str .
- XFor example,
- X.sp
- X.in +2
- X.nf
- Xset pre_indent_str = "/*"
- Xset indent_str = " * "
- Xset post_indent_str = " */"
- X.sp
- X.ti -2
- XAn included message might look something like this:
- X.sp
- X/*
- X * This is a test message to show how
- X * post_indent_str and pre_indent_str
- X * can work together with indent_str.
- X */
- X.fi
- X.in -2
- X.TP
- X.B printer
- X(String)
- XUsed to set the default printer for the lpr command.
- X.TP
- X.B print_cmd
- X(String)
- XThis string should describe a
- X.IR UNIX (TM)
- Xcommand other than "lpr" for sending
- Xmessages to the line printer.
- XSome people may choose to use a device independent
- Xtroff style program, but virtually any UNIX command will suffice.
- XCommon usage might include:
- X.sp
- X.ti +2
- Xset print_cmd = 'ptroff \-ms \-Plp'
- X.ti +2
- Xlpr .\-$
- X.sp
- XThis command would send all messages from the current message to the last
- Xmessage through the ptroff command, supplying the appropriate arguments.
- X.TP
- X.B prompt
- X(String)
- XYou can set your prompt to tell you many different pieces of information.
- XBy default, the prompt is set to the string
- X.sp
- X.ti +2
- X\*QMsg %m of %t: \*U
- X.sp
- XIf you have 10 messages and your current message is 5, then your prompt
- Xwould look like:
- X.sp
- X.ti +2
- XMsg 5 of 10:
- X.sp
- XThe string value that prompt is set to will be printed as your prompt.
- XIf the string contains a `%', then that character is
- Xignored, the next character is evaluated and an appropriate
- Xvalue is printed in its place:
- X.sp
- X.nf
- X.in +2
- X.ta 0.5i
- X%F full path name of the current folder
- X%f name of the current folder (tail of %F)
- X%m \*Qcurrent message\*U number
- X%t total number of messages
- X%n number of \*Qnew\*U messages
- X%u number of unread messages
- X%d number of deleted messages
- X%T current time (hours and seconds)
- X%N today's date (Number of the day in the month)
- X%W weekday name (Sun, Mon, Tue, ...)
- X%M current month
- X%Y this year
- X%y last two digits of %Y
- X\\n a newline
- X\\t a tab
- X.fi
- X.in -2
- X.TP
- X.B quiet
- X(Boolean)
- XIf set, the currently running version of
- X.I Mush
- Xis not printed on startup.
- X.TP
- X.B realname
- X(String)
- XSet to the name of the user. The name is initialized to the value of
- Xthe environment variable
- X.B NAME
- Xupon invocation of the program.
- XIf that isn't set, then the name is gotten from the password file if
- Xavailable. If this variable wants to be reset or changed after the
- Xprogram has started, the user should issue the command:
- X.sp
- X.ti +2
- Xset realname = "Your name here"
- X.TP
- X.B record
- X(String)
- XSet to the name of a file to record all outgoing mail.
- XThis should be a full pathname or the current directory is searched.
- XThe pathname may begin with `+' (indicating the user's ~/Mail directory
- Xor the value of the
- X.B folder
- Xvariable) or with a `~' (or \*Q~user\*U)
- Xindicating the user's home directory.
- X.TP
- X.B reply_to_hdr
- X(String)
- XWhen replying to mail,
- X.I Mush
- Xsearches for return paths from the message by searching for
- Xthe message headings \*QReply-to\*U, \*QReturn-path\*U, and \*QFrom:\*U,
- Xin that order.
- XIf none are found, then the first line of the
- Xmessage created by the delivery system is parsed and the address
- Xgiven there is used. This special message header is created by most
- Xmail delivery programs, but not all of them (MMDF, for one). This line
- Xis called the
- X.B From_
- Xheader because it is a colon-less header, but contains the return address
- Xof the author of the message.
- XIf the variable
- X.B reply_to_hdr
- Xis set to a list of headers (delimited by spaces or commas), then that list
- Xis searched. If none of the headers listed in the variable exist
- Xin the message, then a warning message is printed and the default
- Xheaders are used. The special case From_ header can be specified
- Xas one of the headers to search for.
- X.sp
- X.nf
- X.ti +2
- Xset reply_to_hdr = "sender reply-to return-path from_"
- X.fi
- X.sp
- XThis example shows that mush will search for (in order), the
- Xheaders listed in the reply_to_hdr variable. If one header isn't
- Xfound, then mush looks for the next in the list. If none of the
- Xheaders in the list are found, the default headers (mentioned
- Xabove) are searched. The last header listed in the example is
- Xthe special "From " header.
- XAlso see the
- X.B reply
- Xcommand.
- X.TP
- X.B save_empty
- X(Boolean)
- XNormally, when all messages in a folder are deleted and the user updates
- Xthe folder or changes to a new folder, the empty folder is deleted.
- X.B save_empty
- Xprevents the folder from being deleted and it is left zero length.
- XNote: the main system mailbox is never deleted, even when empty.
- X.TP
- X.B screen
- X(Numeric)
- XMay be set to the number of message headers to display at a time in the
- Xline and curses modes.
- X.TP
- X.B screen_win
- X(Numeric)
- XMay be set to the number of message headers to display in the tool mode.
- XA subwindow is created for message headers, and its size is large
- Xenough to hold $screen_win headers.
- X.TP
- X.B sendmail
- X(String)
- XIf set, the program and arguments described by this variable will
- Xbe executed to actually deliver mail sent by
- X.I Mush.
- X.TP
- X.B show_deleted
- X(Boolean)
- XIf true, deleted message headers are displayed along with
- Xother messages (`*' indicates a deleted message) for the \fBheaders\fR
- Xcommand. Also, deleted messages can be displayed using any command which
- Xdisplays a message.
- XIn curses mode, this variable is ignored and deleted messages are always
- Xdisplayed with other messages to facilitate undeleting messages.
- X.TP
- X.B show_hdrs
- X(String)
- XSet to a list (space and/or comma separated) of headers that are to be the
- Xonly headers displayed when viewing a message.
- XThis variable disables the headers suppressed by the
- X.B ignore
- Xcommand.
- XFor example,
- X.sp
- X.ti +2
- Xset show_hdrs = \*Qfrom date subject to cc\*U
- X.sp
- Xwill only display the headers
- X.B From: Date: Subject: To: Cc:
- Xin their entirety.
- X.TP
- X.B sort
- X(Boolean/string)
- XThe value of this variable is the same as the arguments to the
- X.B sort
- Xcommand.
- XThis variable is used for the initialization file to presort
- Xmail in the system mailbox upon entering mush.
- XSee the COMMANDS section for more information.
- X.TP
- X.B squeeze
- X(Boolean)
- XWhenever messages are read, piped, or saved, if this variable is set,
- Xall consecutive blank lines are squeezed into one blank line.
- X.TP
- X.B tmpdir
- X(String)
- XThis variable describes the path to use as the directory
- Xfor all tempfiles that
- X.I Mush
- Xuses. By default, the user's home directory is used. If that
- Xcannot be accessed, a directory writable by all is used (typically, /tmp).
- XIf \fBtmpdir\fR is set, then it is used first.
- X.TP
- X.B thisfolder
- X(Read-only string)
- XThe full path name of the current mailbox.
- XThis variable cannot be modified or displayed by the
- X.B set
- Xcommand; its value changes whenever a new folder is entered with the
- X.B folder
- Xcommand.
- XDuring sourcing of the initialization files,
- X.B thisfolder
- Xis not set, because the current folder has not yet been read.
- XIf you refer to \*Q$thisfolder\*U in an initialization file
- X.RI ( e.g. ,
- X.IR .mushrc ),
- Xbe sure to do so inside an \*Qif $?thisfolder\*U test.
- X.TP
- X.B toplines
- X(Numeric)
- XThe number of lines of a message to print when the
- X.B top
- Xcommand is issued. If unset, $crt lines are printed.
- XNote that the message body only is printed when using the
- X.B top
- Xcommand; message headers are not counted as lines since they are not displayed.
- X.TP
- X.B unix
- X(Boolean)
- XIf set, commands that are not
- X.I Mush
- Xcommands are considered to be
- X.IR UNIX (TM)
- Xcommands.
- XThis removes the inconvenience of requiring the user to do
- Xshell escapes to do quick
- X.I UNIX
- Xcommands.
- XFor systems that support job control, SIGTSTP will stop the entire shell as
- Xwell as the process being executed.
- XWhen SIGCONT is delivered, both will receive the
- Xsignal and the shell will continue to wait for the job to finish.
- X.sp
- XDue to the lack of real job control, input/output redirection and UNIX command
- Xpiping, this mode of the shell is not intended to be used as a login shell.
- X.sp
- XIf a
- X.I Mush
- Xcommand conflicts with a
- X.I UNIX
- Xcommand, use the command
- X.B sh
- Xto force execution as a shell command or use the full pathname of the command
- X(e.g. starting with a '/').
- X.sp
- X.BR Warning :
- X.I "Be aware that Mush pipes transmit message lists, NOT TEXT."
- XYou cannot pipe the output of
- X.I UNIX
- Xcommands to or from
- X.I Mush
- Xcommands or other
- X.I UNIX
- Xcommands with the
- X.I Mush
- Xpipe mechanism. You can, however, pipe mush commands to a final UNIX
- Xcommand (see the \fBpipe\fR command for more information).
- XUNIX commands should be simple commands without pipes or metacharacters.
- X.sp
- XThis feature is not available for the graphics (tool-based) mode.
- X.TP
- X.B verbose
- X(Boolean)
- XPasses verbose flag to mail delivery systems when sending mail.
- X.TP
- X.B verify
- X(Boolean)
- XWhen through editing messages, just before sending,
- X.B verify
- Xwill ask you if you want to send, continue editing, or abort the
- Xwhole message altogether.
- X.TP
- X.B visual
- X(String)
- XMay be set to the visual editor to use when ~v is specified.
- XDefault is vi.
- XThe visual editor is invoked by the \-e arguments to the
- Xcommands,
- X.B respond
- Xand
- X.BR mail .
- X.TP
- X.B warning
- X(Boolean)
- XIf set, warning messages are printed when:
- X.in +4
- X.ti -2
- X\(bu a command line alias (\*Qcmd\*U) looks like a command.
- X.br
- XFor example,
- X.ti +2
- Xcmd mail 'set fortune; \\mail'
- X.ti +2
- Xcmd respond 'unset fortune; \\respond;'
- X.ti -2
- X\(bu a variable is set differently from its default value.
- X.br
- XFor example, if the escape character is set to something other
- Xthat the tilde (~), then a warning message will be printed.
- X.ti -2
- X\(bu a date format from a message is unknown.
- X.br
- XThe date of a message is taken from the \fBDate:\f header.
- XIf the date on that header is unknown, other headers are searched for a
- Xvalid date format until a legal one is found.
- XThis date may not be
- Xcorrect in that it was the date the message was received, not sent.
- X.in -4
- X.sp
- XThe intent is so that users who are used to their own environments
- Xwill be aware of changes in other environments should they be forced
- Xto use them.
- XThere may also be warning messages of failed routines
- Xor assertions that are not fatal enough to interrupt normal running
- Xof the program.
- X.TP
- X.B wrap
- X(Boolean)
- XNormally, when the last message is deleted, the current message
- Xpointer remains pointing to the last message and the user is done
- Xreviewing his mail.
- XIf the
- X.B wrap
- Xvariable is set, the current message pointer will wrap around to the
- Xbeginning of the user's messages again to the next undeleted message.
- XThis also applies to the
- X.B next
- Xcommand.
- X.TP
- X.B wrapcolumn
- X(Numeric)
- XMay be set to a column number at which line wrap will occur when
- Xcomposing messages.
- XIf set, but given no value, column 78 will be assumed.
- XWhen
- X.I Mush
- Xis able to determine the number of columns on your screen, it will
- Xenforce a maximum value for
- X.B wrapcolumn
- Xof two less than that number of columns.
- XLine wrapping can be disabled either by unsetting
- X.B wrapcolumn
- Xor by setting it with the explicit value of 0 (zero).
- X.sp
- XLine wrapping occurs only at whitespace (spaces or tabs).
- XLines containing no whitespace to the left of the specified column
- Xwill not be wrapped.
- XIf mush was started with the \-e option (echo mode), line wrapping
- Xcannot be done.
- X.SH MACROS
- XMacros are available in several different modes in
- X.IR Mush .
- X.I "Curses mode macros"
- Xare created by using the
- X.B bind
- Xcommand with the special function
- X.B macro
- X(or by using
- X.BR bind-macro ,
- Xwhich is synonymous).
- XThese macros are effective only when the curses interface is active.
- X.I "Line mode macros"
- Xare created with the
- X.B map
- Xcommand, and are effective only in the line-oriented command interface.
- XFinally,
- X.I "composition mode macros"
- Xare created with the
- X.B map!
- Xcommand, and are effective only when composing mail messages.
- XMacros are not available in the
- X.I tool
- Xmode; see, however, the
- X.B fkey
- Xcommand.
- XLine and composition mode macros are also nonfunctional when mush is
- Xstarted with the \-e (echo) option.
- X.PP
- XIn general, macros consist of two parts: a
- X.I "key sequence"
- Xand an
- X.IR expansion .
- XThe
- X.B "key sequence"
- Xis the character or string of characters which, when typed in the
- Xappropriate mode, is recognized by
- X.I Mush
- Xas a reference to a macro.
- XThe
- X.B expansion
- Xpart of a macro is the string that will actually be \*Qseen\*U by
- X.I Mush
- Xwhen the key sequence is recognized.
- XMacros are like an interactive search-and-replace function;
- Xif a key sequence appears in the input, the associated expansion is
- Xsubstituted in its place.
- XThus, if you create a macro whose key sequence is \*Q^X^W\*U (control-X
- Xcontrol-W) and whose expansion is \*Qsave\*U, then when you hold down the
- Xcontrol key and type the two characters `x' and `w', the effect will be
- Xas if you had actually typed the four characters `s', `a', `v' and `e'.
- XThis is called \*Qexpanding\*U the macro.
- XMore detailed examples of macros will be presented in the subsections
- Xfor each mode in which macros can be used.
- X.PP
- XKey sequences are usually made up of control characters or special
- Xstrings of characters generated by \*Qfunction keys,\*U
- Xbut may in fact be almost any string the user desires.
- XKeys that generate a signal or an end-of-file from the keyboard
- X(for example, on BSD systems, control-Z generates a TSTP signal and
- Xcontrol-D generates an end-of-file) can never appear
- Xin key sequences, and macros in line or composition modes cannot
- X.I begin
- Xwith a newline, control-D, or any of the editing keys
- X(erase, word-erase, line-erase, etc.).
- XOtherwise, there are no restrictions.
- XIt should be kept in mind, however, that for the line and composition
- Xmodes, key sequences should be unusual characters or combinations of
- Xcharacters, not individual lower-case letters.
- XIf common characters or strings are used for key sequences, much
- Xconfusion can result when typing commands or messages.
- XThis is not important in the curses mode.
- X.PP
- XIn the line and composition modes, a
- X.I timeout
- Xis used for key recognition; that is, once the first character of the
- Xkey sequence has been typed, the succeeding characters must be typed
- Xafter it relatively quickly, or
- X.I Mush
- Xwill fail to recognize them as a continuous sequence.
- XIt is for this reason that key sequences are usually either very short,
- Xor are strings that are automatically generated by pressing a special
- Xkey on the terminal.
- XOn the other hand, the timeout can be used intentionally to prevent a
- Xmacro from being expanded; simply type the first character of the macro,
- Xthen wait for it to echo before typing the next.
- XThis does not work in curses mode, because curses macros
- Xnever \*Qtime out.\*U
- X.PP
- XIn any mode, macros are
- X.IR recursive ;
- Xthat is, if the
- X.I "key sequence"
- Xof one macro appears in the
- X.I expansion
- Xof another macro (or even of the same macro), the second key sequence
- Xwill be recognized when the first macro is expanded, and this new key
- Xsequence will also be expanded.
- XGreat care should be taken when creating macros to be certain that
- Xrecursive expansions do not happen unintentionally.
- XExpansion can be prevented in line or composition modes by using a
- X.I literal-next
- Xcharacter.
- X.PP
- XLiteral-next characters may be used from the keyboard or imbedded
- Xin expansions.
- XIn either case, they prevent the next character
- Xfrom being interpreted as part of a key sequence.
- X.I Mush
- Xrecognizes the literal-next character from the tty settings of the
- Xterminal, if the \*Qnew\*U BSD-style device driver is available;
- Xotherwise, `^V' (control-V) is recognized as a literal-next.
- XNote that, if you have a tty literal-next character,
- Xthen when typing you will need to type
- X.I two
- Xof them in order to send one to mush; this is because the tty
- Xdriver consumes the first one.
- XIt is not necessary to use two literal-nexts in macro expansions
- Xunless you wish to cause the second literal-next to be literal.
- X.PP
- XBackslash can be used as a literal-next when typing, and can
- Xsometimes be used as a literal-next in expansions; but use it
- Xwith caution, because it also introduces escape sequences
- X(see \*QMacro syntax,\*U below).
- XThere is no literal-next mechanism for curses mode.
- X.PP
- XA macro will always abort whenever
- X.I any
- Xcommand called by the macro returns an error.
- XThis includes recursive expansions, so no matter how often a macro has
- Xrecurred, it will be terminated completely.
- XErrors in curses mode include illegal cursor movements, such as up from
- Xthe top of the screen or down from the last message.
- X.PP
- X.BR "Macro syntax" .
- X.PP
- XA special sytax is provided for specifying control characters and other
- Xnon-printing characters in macro key sequences and expansions.
- XThis syntax is the same as that for bindings, discussed in the
- XCURSES INTERFACE section; it can be summarized as:
- X.ta 1.25i
- X.in +2
- X.nf
- X\\CX control-X (where X is any capital letter)
- X\\E the escape character
- X\\n a newline (other C-style escapes also work)
- X.fi
- X.in -2
- X.sp
- XThus, to create a line mode macro for control-X control-W, as in the
- Xexample above, the command would be
- X.sp
- X.ti +4
- Xmap '\\CX\\CW' save
- X.PP
- XAlso provided is a syntax for executing functions from within macros.
- XThere are two special functions that are effective in all modes;
- Xthese are
- X.I getstr
- Xand
- X.IR getline .
- XBoth of these functions interrupt expansion of the current macro,
- Xand wait for a newline-terminated string to be entered from the
- Xstandard input.
- XThis input string is inserted into the macro expansion.
- XThe functions differ in that
- X.B getline
- Xretains the newline character (carriage-return) at the end of the
- Xinput string, whereas
- X.B getstr
- Xstrips off the newline (one must still be typed to terminate input).
- XThese functions can be executed by surrounding their name with
- Xsquare brackets
- X.RB ( [ ,
- X.BR ] );
- Xfor example,
- X.sp
- X.ti +4
- Xmap '\\CX\\CW' save [getline]
- X.sp
- Xcreates a line mode macro, which is expanded when control-X control-W is
- Xtyped, and which displays \*Qsave\*U followed by a space and then waits
- Xfor the user to type a line of input; the input line will be used as the
- Xarguments to the save command.
- X.PP
- XAddtional functions are currently available only in the curses mode.
- XHowever, the syntax of enclosing the function name in square brackets
- Xapplies to all functions, regardless of mode.
- XNote that
- X.I ONLY
- Xthe function name can appear in the brackets; no whitespace is allowed.
- X.PP
- X.BR "Curses mode macros" .
- X.PP
- XMacros in curses mode are the most versatile, because they can access the
- Xfull range of curses commands quickly and easily.
- XEvery character that appears in the expansion part of a curses mode macro
- Xcan reference a curses command or another macro.
- XLike other curses functions, curses mode macros are created with the
- X.B bind
- Xcommand.
- XFor example, to sort your messages by date and then send the most recent
- Xone to the printer, you could use
- X.sp
- X.ti +4
- Xbind @ macro 'od$|'
- X.sp
- XWhen the `@' key is typed, this macro first invokes sort
- X(`o' from the default bindings) and instructs it to use date (d)
- Xfor sorting; it then moves the current-message pointer to the last
- Xmessage ($) and prints that message (|).
- X.PP
- XAdmittedly, the above macro is somewhat cryptic, and is dependent upon
- Xthe bindings for sort, last-msg, and lpr being set to the defaults.
- XIt would be better, and possibly more understandable, to refer to the
- Xdesired curses functions without using their key bindings.
- XTo allow this, the \*Q[function]\*U syntax described above may be used
- Xin curses mode macros to reference curses functions.
- XThe only function that is prohibited from appearing in the \*Q[\|]\*U
- Xis the special
- X.I macro
- Xfunction, which cannot be called when it has no binding.
- XThe example macro can therefore be rewritten as
- X.sp
- X.ti +4
- Xbind @ macro [sort]d[last-msg][lpr]
- X.sp
- XSuch references to curses functions may be made only in curses mode
- Xmacros, and are effective only when mush is actually in curses mode.
- XThat may sound strange, but the most common use of curses macros is
- Xto quickly perform functions that require an escape to the line mode.
- XFor example, although there is a variation of the curses mode
- X.I mail
- Xfunction that will prompt for additional flags, there is no function
- Xto prompt for flags to be passed to
- X.IR reply .
- XA macro can easily be created to provide this:
- X.sp
- X.ti +4
- Xbind R macro '[line-mode]reply '
- X.sp
- XThis macro binds `R' to perform an escape to line mode and type
- Xthe string \*Qreply\*U followed by a space.
- XMacro expansion then ends, leaving it up to the user to supply
- Xflags to the command or to backspace over it if a different command
- X(or none) is desired.
- XOf course, the macro could also have provided some default arguments:
- X.sp
- X.ti +4
- Xbind R macro '[line-mode]reply \-ei '
- X.PP
- XNote that, if the
- X.B getline
- Xor
- X.B getstr
- Xfunction is used in a line-mode escape, it is not possible to
- Xerase the text that is typed before the
- X.IR get ;
- Xthat is, if the macro had been
- X.sp
- X.ti +4
- Xbind R macro '[line-mode]reply \-ei [getline]'
- X.sp
- Xthen the user would be forced to use the \-ei flags.
- X.PP
- X.BR "Line mode macros" .
- X.PP
- XLine mode macros combine some of the convenience of single-keystroke
- Xcommands with the versatility of the line-oriented text interface.
- XAs has been noted, the choice of characters for line mode key sequences
- Xshould be made carefully, so as not to interfere with normal typing.
- XLine mode macros are created with the
- X.B map
- Xcommand; for example, suppose you frequently forward messages to a
- Xfriend named \*Qfred.\*U You could create a macro to do this:
- X.sp
- X.ti +4
- Xmap '\\CF' 'mail \-f . fred\\n'
- X.sp
- XThis macro causes the single keystroke `^F' (control-F) to forward
- Xthe current message to \*Qfred.\*U Note the newline
- Xcharacter \*Q\\n\*U at the end of the expansion;
- Xthis causes the command to be executed immediately,
- Xwithout you having to type a carriage-return.
- X.PP
- XThe expansion part of a line mode macro will echo to the screen when
- Xit is expanded, so you can see what the macro is doing.
- XYou can therefore use parts of the expansion as a \*Qprompt.\*U In
- Xthe above example, suppose you wished to enter a message list rather
- Xthan always forwarding the current message.
- XChange the macro to:
- X.sp
- X.ti +4
- Xmap '\\CF' 'mail \-f [getstr] fred\\n'
- X.sp
- XThis version of the macro prints \*Qmail \-f\*U and a space, then waits
- Xfor a newline-terminated string from the standard input.
- XThe newline is stripped, and the string is used as the message list
- Xpassed to the \*Qmail \-f\*U command.
- XThe address \*Qfred\*U is also passed to
- X.BR mail ,
- Xso the messages in the list are forwarded to fred.
- X.PP
- XIf you want to be able to \*Qchange your mind\*U after starting a
- Xline mode macro, you must leave the \*Q\\n\*U out of the expansion.
- XWithout the newline, the macro will not be executed immediately, so
- Xyou have a chance erase the line (or part of it) and type
- Xsomething different.
- XRemember that the
- X.B getline
- Xfunction keeps the newline in the string it gets, so if you don't
- Xwant a newline to appear, you must use
- X.BR getstr .
- XWhen using the
- X.I get
- Xfunctions, you should also remember that you can
- X.I never
- Xbackspace past the \*Qbeginning\*U of a
- X.BR getline ,
- Xand you can backspace past the beginning of a
- X.B getstr
- Xonly after the get has been completed.
- X.PP
- XWhen the
- X.B getstr
- Xfunction is used in line mode macros,
- X.I Mush
- Xwill reprint the current input line so you can see what the whole
- Xthing looks like, but will not redisplay the line mode prompt
- X(see the entry for
- X.B prompt
- Xin the VARIABLES section for information on what the
- Xprompt looks like).
- XDon't let this worry you.
- XThe input line is also reprinted when
- X.B getline
- Xis used, but the newline in the input string usually results in a
- Xnew prompt being displayed.
- X.PP
- X.IR NOTE :
- XLine mode macros are not available when using the line-mode escape
- Xfunction in curses mode.
- XIt is necessary to escape all the way to line mode (that is, leave
- Xcurses mode by typing carriage-return at the `:' prompt) in order
- Xto access line mode macros.
- XThis is to prevent possible confusion when similar macros exist
- Xin both line and curses modes.
- X.PP
- X.BR "Composition mode macros" .
- X.PP
- XComposition mode macros are very similar to line mode macros, and
- Xprovide a \*Qpower typing\*U function when composing messages.
- XFor example, you might want to have the word \*Qpercent\*U inserted
- Xinto your message whenever you hit the `%' key:
- X.sp
- X.ti +4
- Xmap! % percent
- X.sp
- XAnother use is to simulate the indentation features of editors.
- XFor example, you might
- X.sp
- X.ti +4
- Xmap! '\\CT' '\ \ \ \ '
- X.sp
- X(where the expansion is four spaces, enclosed in single quotes).
- XThis macro causes four spaces to be inserted into the message whenever
- Xcontrol-T is typed.
- X.PP
- XCompositon mode macros can also be used to execute
- X.I tilde-escapes
- X(see the GENERAL USAGE section for a list of these).
- XFor example, you could create a macro to invoke the editor:
- X.sp
- X.ti +4
- Xmap! '\\CE' '\\n~v\\n'
- X.sp
- XWhen control-E is typed, this macro prints a newline (to be sure that
- Xthe tilde-escape is the first thing on a line), then types \*Q~v\*U
- Xfollowed by another newline, to start the editor.
- XSimilar macros can be created for other tilde-escapes.
- X.PP
- X.BR "Mixed mode macros" .
- X.PP
- XIt is not normally possible to mix macros among the different modes.
- XHowever, once expansion has begun, it is interrupted only by an error
- Xor by the appearance of one of the special
- X.I get
- Xfunctions.
- XIt is therefore possible to have a macro expansion which causes
- Xthe mode to change before the expansion has completed.
- XIn this case, recursive expansions will apply to the new mode.
- XSuppose we are using a variation of the editor-starting macro shown
- Xabove for composition mode:
- X.sp
- X.ti +4
- Xmap! '\\CE' '\\n~v emacs\\n'
- X.sp
- XThis macro causes the \*Qemacs\*U editor to be started when control-E
- Xis typed in composition mode.
- XWe can now create a line mode macro that makes use of this
- Xcomposition mode macro:
- X.sp
- X.ti +4
- Xmap '#' 'reply \-i [getline]~t[getline]\\CE'
- X.sp
- XWhen the `#' key is pressed in line mode, this macro will
- Xprint \*Qreply \-i\*U and wait for a message list, then enter
- Xcomposition mode (by executing the
- X.B reply
- Xcommand).
- XIn composition mode, it will display the To: line
- X(the \*Q~t\*U escape) and wait for other addresses to be added.
- XFinally, it will recursively expand the control-E macro, to
- Xstart editing the message with emacs.
- X.PP
- XAs can be seen from this example, the
- X.I Mush
- Xmacro facility is very powerful.
- XBe very careful not to accidentally expand recursive macros,
- Xespecially when using macros that change modes.
- XWhen testing new macros, it is a good idea to start mush in
- X.I read-only
- Xmode (the \-r command line flag) to be sure that messages are
- Xnot lost or altered.
- X.PP
- X.BR "Getting rid of macros" .
- X.PP
- XIt is not necessary to delete a macro in order to redefine it.
- XNew expansions for existing key sequences will automatically replace
- Xthe old expansions.
- XIf it is necessary to remove a macro completely, the commands
- X.BR unbind ,
- X.B unmap
- Xand
- X.B unmap!
- Xcan be used to remove curses mode, line mode, and composition mode
- Xmacros, respectively.
- XRemember to use a backslash or other literal-next character to prevent
- Xthe expansion of line mode macros when using these commands, especially
- X.BR unmap .
- X.SH "MAIL ADDRESSES"
- XWhenever a command that requires a user address or set of addresses
- Xis specified
- X.RB ( mail ,
- X.BR reply ,
- X.BR alias ,
- X.BR etc )
- Xthe addresses given must be separated by commas.
- XMost casual users specify addresses that contain no comments or whitespace.
- XThe simplest addresses are just the login names of the users you wish to send
- Xyour message to:
- X.sp
- X.ti +2
- X\fBmail\fR fred barney wilma betty
- X.sp
- XIn these cases,
- X.I Mush
- Xcan figure out that they are separate addresses and
- Xinsert commas between addresses automatically.
- X.sp
- X.ti +2
- XTo: fred, barney, wilma, betty
- X.sp
- XAddresses may also contain `!', `@' and `%' characters which are used
- Xto separate hostnames and the final user name from each other.
- XThis is primarily used to mail to users on other machines.
- XUUCP addresses are specified as
- X.sp
- X.ti +2
- Xhost1!host2!user
- X.sp
- Xwhere there may be as many hosts as necessary to route the message
- Xto the recipient user.
- XHere, the user's account is on \*Qhost2\*U
- Xand that machine is connected to \*Qhost1\*U.
- X.I Domain
- Xaddresses (also called Arpanet, RFC822, and \*Qfully qualified\*U addresses)
- Xare specified as
- X.sp
- X.ti +2
- Xuser@host.domain
- X.ti +2
- Xuser%host2.domain@host1
- X.sp
- Xwhere \*Qdomain\*U is a domain name such as \*Q.berkeley.edu\*U or \*Q.com\*U.
- XAs in the first example, the user is on \*Qhost2\*U, but that machine talks
- Xto \*Qhost1\*U.
- XIt is beyond the scope of this document to discuss in detail the ramifications
- Xof internetwork mailing.
- XMore information can be obtained through your system manager.
- X.PP
- X.I Mush
- Xunderstands addresses containing a comment field.
- XComment fields do not affect the destination address of mail being sent.
- XThese fields are purely for
- Xhuman legibility and may be specified according to the following constraints:
- X.sp
- XAnything within angle brackets is an address; whatever is outside of the
- Xaddress is considered a comment:
- X.sp
- X.ti +2
- XDan Heller <sun!island!argv>
- X.ti +2
- XDan Heller <argv%island@sun.com>
- X.sp
- XAnything that has parentheses is a comment; whatever is outside of the
- Xparentheses is considered the address:
- X.sp
- X.ti +2
- Xsun!island!argv (Dan Heller)
- X.ti +2
- Xargv%island@sun.com (Dan Heller)
- X.sp
- XDouble quotes (") are treated just like parentheses:
- X.sp
- X.ti +2
- X"Dan Heller" sun!island!argv
- X.ti +2
- X"Dan Heller" island!argv@sun.com
- X.sp
- XIf the comment is to contain a comma, the first case above may not be used;
- Xyou must use either the parenthesis or double-quote cases.
- X.sp
- X.ti +2
- Xfred@flintstone.bed.rock (Fred Flintstone, Cave Man)
- X.sp
- XIf the comment contains unbalanced quotes, unpredictable results may occur
- X(Mush won't deliver the mail).
- X.sp
- XSince the angle brackets have the highest precedence, quotes or parentheses
- Xmay be used in conjunction with one another.
- X.sp
- X.ti +2
- XYabba Dabba Doo (Fred Flintstone) <fred>
- X.ti +2
- XScoobie "Doobie" Doo <scooby@shaggys.mystery.machine>
- X.PP
- XMultiple addresses may appear on a line:
- X.sp
- X.in +2
- Xisland!argv@sun.com argv@garp.mit.edu dheller
- X.in -2
- X.sp
- XBecause there is no indication of comments (parenthesis, angle bracket,
- Xor quotes), it is assumed that these are separate addresses and mush will
- Xinsert commas between these addresses accordingly.
- XIt is for this reason that the user is encouraged to explicitly insert
- Xcommas between all mail addresses and not depend on the automation of comma
- Xinsertion to correctly separate addresses from one another.
- X.PP
- XMail aliases may contain addresses of the form described above.
- X.sp
- X.nf
- X.in +2
- X.ta 1.5i
- Xalias george George Jetson <george@spacely.space.sprockets>
- Xalias jane Jane Jetson <jane@sky-high.appts>
- Xalias group george, jane
- X.in -2
- X.fi
- X.sp
- XYou can mail using the alias as an address and it will be expanded
- Xaccordingly.
- XYou cannot, however, reference an alias and specify a
- Xcomment or another address at the same time.
- X.sp
- X.ti +2
- XTo: The Jetsons <group>
- X.sp
- XThe alias \*Qgroup\*U will not be expanded because the angle brackets
- Xcauses it to be considered as another address entirely.
- X.SH FILES
- X.nf
- X.ta 2.0i
- X/usr/spool/mail/* Directory for incoming mail
- X~/Mail Default \fBfolder\fR directory
- X~/mbox File where old mail is saved
- X~/.mushrc File giving initial \fIMush\fR commands
- X~/.mailrc Alternate initialization file
- X~/.edXXXXXXX Temporary for file for outgoing messages
- X~/.mushXXXXXX Temporary mail file (copy of current folder)
- X.fi
- X.PP
- XTemporary files that are created by the program are always
- Xcreated with read/write access to the owner only; group and other
- Xpermissions are never set.
- XThis is also true for the /usr/spool/mail/* files.
- XAll other files created by the user via commands internal or external
- Xto the program have permissions set by the user's default umask.
- XIf the umask is reset within the program, the mask remains
- Xintact even after exiting.
- XRemember to set the variable
- X.B unix
- Xbefore attempting to set the umask value.
- X.PP
- XIf your system is using Sun Microsystem's NFS, take special note to
- Xread the manual page for mount(1).
- XFilesystems mounted for read/write
- Xaccess should be mounted as \*Qhard\*U NFS mounts or you may lose
- Xmailboxes during a timeout during a write or update.
- X.PP
- XFilesystems that use RFS still have bugs to be ironed out in the way
- Xof owners and permissions concerning utime(2).
- X.SH "SEE ALSO"
- X.IR Mail (1),
- X.IR binmail (1),
- X.IR csh (1),
- X.IR aliases (5),
- X.IR mount (1),
- X.IR mailaddr (7),
- X.IR sendmail (8),
- X.IR printf (3),
- X.IR execl (3),
- X.IR umask (1),
- X.IR utime (2).
- X.SH AUTHOR
- XThe original
- X.I Mush
- Xwas written entirely by Dan Heller.
- XCode to support macros, line wrapping, and some other miscellaneous
- Xdetails, was written by Bart Schaefer, who gets his name in print
- Xbecause he updated and proofread this manual.
- XNumerous others have supplied valuable suggestions
- Xand assorted bits and pieces.
- X.PP
- Xargv@spam.istc.sri.com sun!island!argv
- X.SH DISCLAIMERS
- X.I Mush
- Xcontains no
- X.IR UNIX (TM)
- Xsources and never has.
- XIt is also not a modified version of any other mail user agent.
- XSimilarities
- Xwith any other mailer may have been designed for compatibility reasons.
- X.PP
- X.I UNIX
- Xis a trademark of AT&T.
- X.PP
- XThe Flintstones and The Jetsons are trademarks of Hannah-Barbara Inc.
- X.SH BUGS
- XThe curses interface uses the curses library.
- XThe routines from the library that are used are the most basic and simple
- Xso as to avoid possible bugginess that
- Xdifferent versions of UNIX might have.
- XHowever, one unavoidable problem is the reverse video mode.
- XDepending on your terminal,
- Xthe termcap entry for it, and the version of curses you are running,
- Xthe reverse video may makes things worse than desired.
- XIn such situations, the user should set the variable
- X.B no_reverse
- Xto not get reverse video.
- X\&`^R' may still be entered at runtime in the curses
- Xinterface to toggle reverse video.
- X.PP
- XIf the program is already running and the system [later] has to swap
- Xand there is no swap space left, there may be problems.
- XOne such problem is sending mail.
- XIf this happens, then sending mail
- Xwill fail and a segmentation fault from the spawned/forked child will occur
- Xunless the -v flag was given to mail.
- XThe unsent letter will not be removed from the editing file ($home/.edXXXXXX)
- Xand may be recovered.
- X.PP
- XMany functions available to the line oriented mode (shell mode)
- Xare not available to the tool mode.
- XFor example,
- X.B pick
- Xmay not be directly accessed although experienced users may find that
- Xtyping pick commands within single backquotes in the \*Qrange\*U panel item
- Xin the header window will indeed pick messages.
- XThis is mostly for selecting the \*Qdelete range\*U item
- Xor the middle mouse button icon in the header panel.
- X.PP
- XShell escapes (of any kind) may not be called from
- Xthe tool/graphics mode.
- XThe reason for this is that there is no tty
- X.I window
- Xto run commands from.
- XIt is impossible to determine whether or not the user wants to run an
- Xinteractive program or not, so it is best to disallow its usage all together.
- XThe experienced window user
- Xcan figure out how to really do shell layers from within the tool mode.
- X.PP
- XToggling from the curses mode to the line mode to get the full
- Xfunctionality of the shell/line mode is unfortunately necessary
- Xin the name of \*Quser friendliness.\*U
- XMostly, this is only necessary
- Xfor piping of commands and using the pick command.
- X.PP
- XThe function keys and their ability to
- X.I work
- Xhas been variable depending on the version of SunWindows/SunView
- Xyour Sun Workstation has. From time to time, it works, but when it
- Xdoesn't, it seems to be related to other user or system definable
- Xdot-files or whatever.
- XI hardly use them, so I haven't had a chance
- Xto really debug that part much.
- XMy experiences have shown them to
- Xwork in Sun versions 2.0, 2.2, and 3.3, but not any other version.
- X.PP
- XWhen using
- X.B vi
- Xin the tool/graphics mode, periodically the window will be one
- Xline \*Qshort.\*U
- XThat is, scrolling will be off by one line and you may
- Xhave to redraw the window (using \*Qz.\*U in vi) to get it in sync again.
- XThis is a known problem with SunWindows, but Sun refuses to fix it
- Xas SunWindows are \*Qobsolete.\*U
- X.PP
- XWhen running on full filesystems,
- X.I Mush
- Xmay complain or not even run since it needs temporary space with which
- Xto work.
- XInstead of finding new filesystems on its own,
- X.I Mush
- Xleaves this task up to the user.
- XThe workaround is to set the variable
- X.B tmpdir
- Xin the initialization file to be a writable place in a filesystem that
- Xhas enough disk space.
- X.PP
- XMost of the other known and documented bugs
- Xare in the supplied README file accompanying the source.
- XOf course, the source is an excellent place to look as most known bugs are
- Xdocumented right in the source code.
- XA good way to track suspicious bugs is to use the
- X.B debug
- Xcommand, but note that
- Xthis command is very difficult to use in curses mode.
- END_OF_FILE
- if test 49215 -ne `wc -c <'mush.1.3'`; then
- echo shar: \"'mush.1.3'\" unpacked with wrong size!
- fi
- # end of 'mush.1.3'
- fi
- echo shar: End of archive 17 \(of 19\).
- cp /dev/null ark17isdone
- MISSING=""
- for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 ; do
- if test ! -f ark${I}isdone ; then
- MISSING="${MISSING} ${I}"
- fi
- done
- if test "${MISSING}" = "" ; then
- echo You have unpacked all 19 archives.
- rm -f ark[1-9]isdone ark[1-9][0-9]isdone
- else
- echo You still need to unpack the following archives:
- echo " " ${MISSING}
- fi
- ## End of shell archive.
- exit 0
-